A three-state buffer, sometimes called a TRI-STATE.TM. buffer, is a circuit used to control transfer of signals, typically logic signals such as data, from its input to its output. A typical application as an output buffer is to drive data from an integrated circuit onto a bus, or to isolate the input of the three-state driver from the bus when data is not being driven onto the bus. A typical application as an input buffer is to permit data to be pulled off of a bus.
In microprocessors, such as a digital signal processor, the transfer of data takes place over a common set of conductors known as a bus. Some buses are unidirectional and permit signals to flow in only one direction on the bus, whereas other buses are bidirectional and permit signals to flow in either direction on the bus. Many integrated circuits in a system have inputs and outputs tied to a bus. Integrated circuits coupled to a bus are coupled through a three-state buffer that may be separate therefrom, but more commonly is an integral part of the integrated circuit.
A three-state buffer allows three possible output states: high, low, and high impedance. In the high impedance state, the output is an open or floating terminal that, as seen by the bus, is a high impedance to both ground and the power supply. Where multiple devices, such as integrated circuits, are coupled to a common bus, the three-state buffer permits controlling the transmission of signals from any one of the devices over the bus to other devices. The three-state buffer associated with the device providing the signal will be enabled to permit signals to pass through its three-state buffer and be driven onto the associated bus. Other output buffers coupled to the bus will be in a high impedance state, effectively disconnecting them from the bus. Some output buffers invert the signal as it is driven onto the bus; other output buffers drive a noninverted version of the signal onto the bus.
Buses of various types are in common use. Bus drivers are manufactured for each type of bus and are intended for use with a specific type of bus. When bus driver circuits were fabricated as separate integrated circuits, a system designer could select the appropriate bus driver circuits for a particular application. With higher levels of integrated circuit integration, the bus driver circuits are fabricated as part of the same integrated circuit as microprocessors, memories, and other devices that are coupled to a bus. Since each device may be used with any of the types of buses, it has been necessary to fabricate separate devices for each bus application. It would be desirable to fabricate only one type of each device with a programmable driver circuit that could be configured at the time of application for the particular type of bus being used in an application.